﻿#pragma once 
#include "Panel.h"
#include "AngelScriptBinder.h"

_NAMESPACE_BEGIN

/// 内核，其他非渲染的功能模块都要挂在它上面
class GameCore : public Panel
{
public:
	
	/// 单体类声明
	SINGLETON_HELPER(GameCore)

	/// 构造函数
	GameCore();
	
	/// 析构函数
	virtual ~GameCore();

public:

	/// 内核初始化
	/// 在整个游戏程序的初始时调用
	void Initial();

	/// 注册脚本对象
	void RegistScriptObj(CONST_REF(std::string) name, asIScriptObject* obj);

	/// 按名称获取已注册的脚本对象
	asIScriptObject* GetScriptObject(CONST_REF(std::string) name)
	{
		return scriptObjs[name];
	}

protected:
	
	///脚本对象表
	hash_map<std::string, asIScriptObject*>	scriptObjs;
};

_NAMESPACE_END